package one;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//生产者
public class Producer {
    //队列名称
    public static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建链接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("62.234.167.47");
        factory.setUsername("root");
        factory.setPassword("123456");

        //2.创建链接
        Connection connection = factory.newConnection();
        //3.获取信道
        Channel channel = connection.createChannel();

        //4.生产一个队列
        /**
         * 参数说明
         * 1.queue 要声明的队列名称
         * 2.durable 是否将队列标记为持久化 true服务器重启后仍然存在 默认为false
         * 3.exclusive: 是否将队列标记为独占 ture 只能由声明它的连接使用 并且在连接关闭后自动删除 默认为false
         * 4.auto_delete 是否将队列标记为自动删除 如果设置为True 则在最后一个消费者断开连接后 队列将被自动删除 默认为false
         * 5 argument 自选参数
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);

        //5.发消息
        String message = "Hello RabbitMQ";

        /**
         * 发送一个消息
         * 1.发送到哪个交换机
         * 2.路由的key值是哪个本次是队列的名称
         * 3.其他参数信息
         * 4.发送消息的消息体
         */
        channel.basicPublish("", QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送完毕");
    }
}
